# 特殊属性 同样是首位双下划线修饰
class A:
    pass
class B:
    pass
class C(A,B):
    def __init__(self,name,age):
        self.name = name
        self.age = age

a = A()
b = B()
c = C('王老板',20)

# 对象的属性字典
print('a的属性字典：',a.__dict__)
print('b的属性字典：',b.__dict__)
print('c的属性字典：',c.__dict__)

# 对象所属的类
print('a所属的类：',a.__class__)
print('b所属的类：',b.__class__)
print('b所属的类：',b.__class__)

# 类的父类元组
print('A所属的类：',A.__bases__)
print('B所属的类：',B.__bases__)
print('C所属的类：',C.__bases__)

# 类的父类 第一个
print('A所属的类：',A.__base__)
print('B所属的类：',B.__base__)
print('C所属的类：',C.__base__)

# 层次结构
print('A的层次结构：',A.__mro__)
print('B的层次结构：',B.__mro__)
print('C的层次结构：',C.__mro__)

# 子类列表(方法)
print('A的子类列表：',A.__subclasses__())
print('B的子类列表：',B.__subclasses__())
print('C的子类列表：',C.__subclasses__())

